#[derive(Debug)]

struct User{
    name:String,
    age:u32
}
fn main() {
    println!("Hello, world!");
    other_fn();

    other_fn_01(-32,12);
   let y:u32= other_fn_02(32,12);
   println!("y={}",y);


   //流出控制
   learn_con();
}
//无参数函数
fn other_fn(){
    println!("这是一个函数");
}

//有参数函数
fn other_fn_01(a:i32,b:u32){
    println!("这是一个函数a={},b={}",a,b);
}
//有参数函数，又返回值
fn other_fn_02(a:u32,b:u32)->u32{
    println!("这是一个函数a={},b={}",a,b);
    //return a+b;//这里可以这样省略分号
    a+b
}

//流出控制

fn learn_con(){

    let y=3;
    if y==1{
        println!("ok")
    }else{
        println!("error")
    }


    //在let 中使用 

    let is_bool=false;

    let x=if is_bool{
        5
    }else {
        6
    };

    println!("x={}",x);

    user_obj();

}



fn user_obj(){

    let user1=User{
        name:String::from("Jhon"),
        age:30
    };

   println!("{:#?}",user1);
    let mut user2=User{
    name:String::from("charsle"),
    ..user1
    };
    user2.age=40;
    println!("user2={:#?}",user2);



    struct Point(i32,i32);
let a=Point(10,20);
let b=Point(40,60);
 println!("a.0={},b.0={}",a.0,b.0);
}


